package com.bkq.cb;

import java.text.SimpleDateFormat;


import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;

import com.bkq.cb.SqliteServices;
import com.bkq.cb.BLO.UserBUO;
import com.bkq.cb.R;

import android.R.integer;
import android.app.DatePickerDialog;
import android.app.ListActivity;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.Adapter;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.Filter;
import android.widget.Filterable;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemSelectedListener;

public class CashBookScreen extends ListActivity {
	private Button back,list;
	private static String[] data ={}; 
	private static String[] money ={}; 
	private static String[] type ={}; 
	private static String[] dayFrom ={}; 
	private static String[] dayTo ={}; 
	private static String[] id ={}; 
	private static Cursor mCursor;
	private EfficientAdapter adap;
	String[] items={"","Day", "Custom"};
	private static SqliteServices service = null;
	private TextView today;
	static String idUser, check,day,day_To,to_day,nameUser;
	GetDMY g = new GetDMY();
	TextView tv ;
	ArrayList<String> a  ;
    ArrayList<String> m ;
    ArrayList<String> t  ;
    ArrayList<String> d ;
    ArrayList<String> d2 ;
    ArrayList<String> i ;

	public void onCreate(Bundle savedInstanceState) {
		 super.onCreate(savedInstanceState);
	     setContentView(R.layout.cashbookscreen);
	   //  spin=(Spinner)findViewById(R.id.listIma_CashBook);
	  //   ArrayAdapter<String> aa=new ArrayAdapter<String>(this,
      //           android.R.layout.simple_spinner_item,
       //          items);
	   //  aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
	 //    spin.setAdapter(aa);
	  //  spin.setSelection(0, false);
	     today = (TextView)findViewById(R.id.todayTv_CashBook);
	     tv = (TextView)findViewById(R.id.tv);
	     Bundle extras = getIntent().getExtras();

	     list = (Button)findViewById(R.id.listIma_CashBook);
	     back = (Button)findViewById(R.id.backIma_CashBook);  
	     if(extras!=null){
	        nameUser = extras.getString("nameUser").toString();
		    idUser = extras.getString("idUser").toString();
		    check = extras.getString("check").toString();
		    day = extras.getString("day").toString();
		    day_To = extras.getString("dayTo").toString();
		 }
	     if(check.equals("0")){
	    	 SimpleDateFormat dayForm = new SimpleDateFormat("d/M/yyyy");
		     Date date = new Date();
		     today.setText(String.valueOf(dayForm.format(date).toString()));
		     to_day = today.getText().toString();
		     adap = new EfficientAdapter(this);
		     UserBUO userbto=new UserBUO(this);
		     service = new SqliteServices(this);
		     print();
		     assign();
		         //  adap.notifyDataSetChanged();
		     setListAdapter(adap); 	 
	     }
	     else  if(check.equals("1")){
	    	 today.setText(day);
	         to_day = day;
	         adap = new EfficientAdapter(this);
		     UserBUO userbto=new UserBUO(this);
		     service = new SqliteServices(this);
		     print();
		     assign();
		         //  adap.notifyDataSetChanged();
		     setListAdapter(adap); 	 
	     }
	     else
	    	 if(check.equals("2")){
	    		 if(day.equals(day_To)){
	    			 today.setText(day); 
		         }   
	    		 else{
	        		  today.setText(day+" - "+day_To);
		         }
		        //	 to_day = day;
		         adap = new EfficientAdapter(this);
			     UserBUO userbto=new UserBUO(this);
			     service = new SqliteServices(this);
			     print1();
			     assign();
			     //  adap.notifyDataSetChanged();
			     setListAdapter(adap); 	 
		         }
	      back.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				Intent i = new Intent(CashBookScreen.this,MainScreen.class);
				i.putExtra("idUser", idUser);
				i.putExtra("nameUser", nameUser);
				startActivity(i);
			}
		});
	    list.setOnClickListener(new View.OnClickListener() {
						
			@Override
			public void onClick(View v) {
			// TODO Auto-generated method stub
				Intent i = new Intent(CashBookScreen.this,SelectModeScreen.class);
				i.putExtra("idUser", idUser);
				i.putExtra("nameUser", nameUser);
				startActivity(i);
			}
		});
	}
	private void assign(){
		  id= i.toArray(new String[i.size()]);
       	  dayTo= d2.toArray(new String[d2.size()]);
       	  dayFrom= d.toArray(new String[d.size()]);
       	  data= a.toArray(new String[a.size()]);
       	  money= m.toArray(new String[m.size()]);
       	  type= t.toArray(new String[t.size()]);
	}
	private void print(){   
		a = new ArrayList<String>() ;
		m = new ArrayList<String>() ;
	    t = new ArrayList<String>() ;
	    d = new ArrayList<String>() ;
	    d2 = new ArrayList<String>() ;
	    i = new ArrayList<String>() ;
		service.openDatabase();
		mCursor = service.queryData("select * from tblTransaction");	 
		if(mCursor.moveToFirst()){
			if(mCursor.getString(3).equals(to_day)&&mCursor.getString(1).equals(idUser) ){
				i.add(mCursor.getString(0).toString());
				d2.add(mCursor.getString(4).toString());
				t.add(mCursor.getString(5).toString());
				d.add(mCursor.getString(3).toString());
				a.add(mCursor.getString(2).toString());
				m.add(mCursor.getString(4).toString());	
			}
			while(mCursor.moveToNext()){
				if(mCursor.getString(3).equals(to_day)&&mCursor.getString(1).equals(idUser))
				{
					i.add(mCursor.getString(0).toString());
					d2.add(mCursor.getString(4).toString());
					t.add(mCursor.getString(5).toString());
					a.add(mCursor.getString(2).toString());
					m.add(mCursor.getString(4).toString());
					d.add(mCursor.getString(3).toString());
				}
			}
		
		}
		mCursor.close();
		mCursor = service.queryData("select * from tblLoan");
		if(mCursor.moveToFirst()){
			if(mCursor.getString(3).equals(to_day)&&mCursor.getString(1).equals(idUser) ){
				i.add(mCursor.getString(0).toString());
				d2.add(mCursor.getString(4).toString());
				d.add(mCursor.getString(3).toString());
				t.add(mCursor.getString(6).toString());	
				a.add(mCursor.getString(6).toString()+" "+mCursor.getString(2).toString());
				m.add(mCursor.getString(5).toString());
			}
			while(mCursor.moveToNext()){
				if(mCursor.getString(3).equals(to_day)&&mCursor.getString(1).equals(idUser)){
					i.add(mCursor.getString(0).toString());
					d2.add(mCursor.getString(4).toString());
					d.add(mCursor.getString(3).toString());
					t.add(mCursor.getString(6).toString());	
					a.add(mCursor.getString(6).toString()+" "+mCursor.getString(2).toString());
					m.add(mCursor.getString(5).toString());
				}
			}
		}
		mCursor.close();
		service.close();
	 }
	 private void print1(){   
	
		// int k=0,l=0;
		 a = new ArrayList<String>() ;
		 m = new ArrayList<String>() ;
	     t = new ArrayList<String>() ;
	     d = new ArrayList<String>() ;
	     d2 = new ArrayList<String>() ;
	     i = new ArrayList<String>() ;
		 service.openDatabase();
		 mCursor = service.queryData("select * from tblTransaction");	 
		 if(mCursor.moveToFirst()){
			 if(mCursor.getString(1).equals(idUser)){
				 if(Integer.parseInt(g.getYear(day))<Integer.parseInt(g.getYear(mCursor.getString(3)))&&Integer.parseInt(g.getYear(day_To))>Integer.parseInt(g.getYear(mCursor.getString(3)))){		
					 i.add(mCursor.getString(0).toString());
					 d2.add(mCursor.getString(4).toString());
					 t.add(mCursor.getString(5).toString());
					 d.add(mCursor.getString(3).toString());
					 a.add(mCursor.getString(2).toString());
					 m.add(mCursor.getString(4).toString());
				  }
			
				  else if(Integer.parseInt(g.getYear(day))==Integer.parseInt(g.getYear(mCursor.getString(3)))
						&&Integer.parseInt(g.getYear(day_To))==Integer.parseInt(g.getYear(mCursor.getString(3)))){
					  if(Integer.parseInt(g.getMonth(day))<Integer.parseInt(g.getMonth(mCursor.getString(3)))
							&&Integer.parseInt(g.getMonth(day_To))>Integer.parseInt(g.getMonth(mCursor.getString(3)))){
						  	i.add(mCursor.getString(0).toString());
						  	d2.add(mCursor.getString(4).toString());
						  	t.add(mCursor.getString(5).toString());
						  	d.add(mCursor.getString(3).toString());
						  	a.add(mCursor.getString(2).toString());
						  	m.add(mCursor.getString(4).toString());
					  }
					  else if(Integer.parseInt(g.getMonth(day))==Integer.parseInt(g.getMonth(mCursor.getString(3)))
							&&Integer.parseInt(g.getMonth(day_To))==Integer.parseInt(g.getMonth(mCursor.getString(3)))){	
						  if(Integer.parseInt(g.getDay(day))<=Integer.parseInt(g.getDay(mCursor.getString(3)))
								&&Integer.parseInt(g.getDay(day_To))>=Integer.parseInt(g.getDay(mCursor.getString(3)))){
							  i.add(mCursor.getString(0).toString());
							  d2.add(mCursor.getString(4).toString());
							  t.add(mCursor.getString(5).toString());
							  d.add(mCursor.getString(3).toString());
							  a.add(mCursor.getString(2).toString());
							  m.add(mCursor.getString(4).toString());
						  }
					  }
					/*
					else if(Integer.parseInt(g.getMonth(day_To))==Integer.parseInt(g.getMonth(mCursor.getString(3))))
					{
						 if(Integer.parseInt(g.getDay(day_To))>=Integer.parseInt(g.getDay(mCursor.getString(3))))
						 {
							 i.add(mCursor.getString(0).toString());
								d2.add(mCursor.getString(4).toString());
							t.add(mCursor.getString(5).toString());
							d.add(mCursor.getString(3).toString());
							a.add(mCursor.getString(2).toString());
							m.add(mCursor.getString(4).toString());
						 }
					}
					else if(Integer.parseInt(g.getMonth(day))==Integer.parseInt(g.getMonth(mCursor.getString(3))))
					{
						if(Integer.parseInt(g.getDay(day))<=Integer.parseInt(g.getDay(mCursor.getString(3))))
						 {
							 i.add(mCursor.getString(0).toString());
								d2.add(mCursor.getString(4).toString());
							t.add(mCursor.getString(5).toString());
							d.add(mCursor.getString(3).toString());
							a.add(mCursor.getString(2).toString());
							m.add(mCursor.getString(4).toString());
						 }
					}
					*/
				  }
				  else if(Integer.parseInt(g.getYear(day))==Integer.parseInt(g.getYear(mCursor.getString(3)))
							&&Integer.parseInt(g.getYear(day_To))>Integer.parseInt(g.getYear(mCursor.getString(3)))){
						if(Integer.parseInt(g.getMonth(mCursor.getString(3)))>Integer.parseInt(g.getMonth(day))){
							i.add(mCursor.getString(0).toString());
							d2.add(mCursor.getString(4).toString());
							t.add(mCursor.getString(5).toString());
							d.add(mCursor.getString(3).toString());
							a.add(mCursor.getString(2).toString());
							m.add(mCursor.getString(4).toString());
						}
						else if(Integer.parseInt(g.getMonth(mCursor.getString(3)))==Integer.parseInt(g.getMonth(day))){
							if(Integer.parseInt(g.getDay(mCursor.getString(3)))>=Integer.parseInt(g.getDay(day))){
								i.add(mCursor.getString(0).toString());
								d2.add(mCursor.getString(4).toString());
								t.add(mCursor.getString(5).toString());
								d.add(mCursor.getString(3).toString());
								a.add(mCursor.getString(2).toString());
								m.add(mCursor.getString(4).toString());
							}
						}
				  }
				  else if(Integer.parseInt(g.getYear(day))<Integer.parseInt(g.getYear(mCursor.getString(3)))
							&&Integer.parseInt(g.getYear(day_To))==Integer.parseInt(g.getYear(mCursor.getString(3)))){
						if(Integer.parseInt(g.getMonth(mCursor.getString(3)))<Integer.parseInt(g.getMonth(day_To))){
							i.add(mCursor.getString(0).toString());
							d2.add(mCursor.getString(4).toString());
							t.add(mCursor.getString(5).toString());
							d.add(mCursor.getString(3).toString());
							a.add(mCursor.getString(2).toString());
							m.add(mCursor.getString(4).toString());
						}
						else if(Integer.parseInt(g.getMonth(mCursor.getString(3)))==Integer.parseInt(g.getMonth(day_To))){
							if(Integer.parseInt(g.getDay(mCursor.getString(3)))<=Integer.parseInt(g.getDay(day_To))){
								i.add(mCursor.getString(0).toString());
								d2.add(mCursor.getString(4).toString());
								t.add(mCursor.getString(5).toString());
								d.add(mCursor.getString(3).toString());
								a.add(mCursor.getString(2).toString());
								m.add(mCursor.getString(4).toString());
							}
						}		
				  }
			}	
		    while(mCursor.moveToNext()){
		    	if(mCursor.getString(1).equals(idUser)){
					if(Integer.parseInt(g.getYear(day))<Integer.parseInt(g.getYear(mCursor.getString(3)))&&Integer.parseInt(g.getYear(day_To))>Integer.parseInt(g.getYear(mCursor.getString(3)))){	
						i.add(mCursor.getString(0).toString());
						d2.add(mCursor.getString(4).toString());
						t.add(mCursor.getString(5).toString());
						d.add(mCursor.getString(3).toString());
						a.add(mCursor.getString(2).toString());
						m.add(mCursor.getString(4).toString());
					}
					else if(Integer.parseInt(g.getYear(day))==Integer.parseInt(g.getYear(mCursor.getString(3)))
						&&Integer.parseInt(g.getYear(day_To))==Integer.parseInt(g.getYear(mCursor.getString(3)))){
						if(Integer.parseInt(g.getMonth(day))<Integer.parseInt(g.getMonth(mCursor.getString(3)))
							&&Integer.parseInt(g.getMonth(day_To))>Integer.parseInt(g.getMonth(mCursor.getString(3)))){
							i.add(mCursor.getString(0).toString());
							d2.add(mCursor.getString(4).toString());
							t.add(mCursor.getString(5).toString());
							d.add(mCursor.getString(3).toString());
							a.add(mCursor.getString(2).toString());
							m.add(mCursor.getString(4).toString());
						}
						else if(Integer.parseInt(g.getMonth(day))==Integer.parseInt(g.getMonth(mCursor.getString(3)))
							&&Integer.parseInt(g.getMonth(day_To))==Integer.parseInt(g.getMonth(mCursor.getString(3)))){
							if(Integer.parseInt(g.getDay(day))<=Integer.parseInt(g.getDay(mCursor.getString(3)))
								&&Integer.parseInt(g.getDay(day_To))>=Integer.parseInt(g.getDay(mCursor.getString(3)))){
								i.add(mCursor.getString(0).toString());
								d2.add(mCursor.getString(4).toString());
								t.add(mCursor.getString(5).toString());
								d.add(mCursor.getString(3).toString());
								a.add(mCursor.getString(2).toString());
								m.add(mCursor.getString(4).toString());
							}
						}
					/*
					else if(Integer.parseInt(g.getMonth(day_To))==Integer.parseInt(g.getMonth(mCursor.getString(3))))
					{
						 if(Integer.parseInt(g.getDay(day_To))>=Integer.parseInt(g.getDay(mCursor.getString(3))))
						 {
							 i.add(mCursor.getString(0).toString());
								d2.add(mCursor.getString(4).toString());
							t.add(mCursor.getString(5).toString());
							d.add(mCursor.getString(3).toString());
							a.add(mCursor.getString(2).toString());
							m.add(mCursor.getString(4).toString());
						 }
					}
					else if(Integer.parseInt(g.getMonth(day))==Integer.parseInt(g.getMonth(mCursor.getString(3))))
					{
						if(Integer.parseInt(g.getDay(day))<=Integer.parseInt(g.getDay(mCursor.getString(3))))
						 {
							 i.add(mCursor.getString(0).toString());
								d2.add(mCursor.getString(4).toString());
							t.add(mCursor.getString(5).toString());
							d.add(mCursor.getString(3).toString());
							a.add(mCursor.getString(2).toString());
							m.add(mCursor.getString(4).toString());
						 }
					}
					*/
				  }
				  else if(Integer.parseInt(g.getYear(day))==Integer.parseInt(g.getYear(mCursor.getString(3)))
							&&Integer.parseInt(g.getYear(day_To))>Integer.parseInt(g.getYear(mCursor.getString(3)))){
						if(Integer.parseInt(g.getMonth(mCursor.getString(3)))>Integer.parseInt(g.getMonth(day))){
							i.add(mCursor.getString(0).toString());
							d2.add(mCursor.getString(4).toString());
							t.add(mCursor.getString(5).toString());
							d.add(mCursor.getString(3).toString());
							a.add(mCursor.getString(2).toString());
							m.add(mCursor.getString(4).toString());
						}
						else if(Integer.parseInt(g.getMonth(mCursor.getString(3)))==Integer.parseInt(g.getMonth(day))){
							if(Integer.parseInt(g.getDay(mCursor.getString(3)))>=Integer.parseInt(g.getDay(day))){
								i.add(mCursor.getString(0).toString());
								d2.add(mCursor.getString(4).toString());
								t.add(mCursor.getString(5).toString());
								d.add(mCursor.getString(3).toString());
								a.add(mCursor.getString(2).toString());
								m.add(mCursor.getString(4).toString());
							}
						}
				}
				else if(Integer.parseInt(g.getYear(day))<Integer.parseInt(g.getYear(mCursor.getString(3)))
							&&Integer.parseInt(g.getYear(day_To))==Integer.parseInt(g.getYear(mCursor.getString(3)))){
						if(Integer.parseInt(g.getMonth(mCursor.getString(3)))<Integer.parseInt(g.getMonth(day_To))){
							i.add(mCursor.getString(0).toString());
							d2.add(mCursor.getString(4).toString());
							t.add(mCursor.getString(5).toString());
							d.add(mCursor.getString(3).toString());
							a.add(mCursor.getString(2).toString());
							m.add(mCursor.getString(4).toString());
						}
						else if(Integer.parseInt(g.getMonth(mCursor.getString(3)))==Integer.parseInt(g.getMonth(day_To))){
							if(Integer.parseInt(g.getDay(mCursor.getString(3)))<=Integer.parseInt(g.getDay(day_To))){
								i.add(mCursor.getString(0).toString());
								d2.add(mCursor.getString(4).toString());
								t.add(mCursor.getString(5).toString());
								d.add(mCursor.getString(3).toString());
								a.add(mCursor.getString(2).toString());
								m.add(mCursor.getString(4).toString());
							}
						}		
				  }
			}
		  }
		
	}
		  
	mCursor.close();
	
	mCursor = service.queryData("select * from tblLoan");
			 
	if(mCursor.moveToFirst()){
		if(mCursor.getString(1).equals(idUser)){
			if(Integer.parseInt(g.getYear(day))<Integer.parseInt(g.getYear(mCursor.getString(3)))&&Integer.parseInt(g.getYear(day_To))>Integer.parseInt(g.getYear(mCursor.getString(3)))){
				i.add(mCursor.getString(0).toString());
				d2.add(mCursor.getString(4).toString());
				d.add(mCursor.getString(3).toString());
				t.add(mCursor.getString(6).toString());	
				a.add(mCursor.getString(6).toString()+" "+mCursor.getString(2).toString());
				m.add(mCursor.getString(5).toString());
			}
			else if(Integer.parseInt(g.getYear(day))==Integer.parseInt(g.getYear(mCursor.getString(3)))
						&&Integer.parseInt(g.getYear(day_To))==Integer.parseInt(g.getYear(mCursor.getString(3)))){
					if(Integer.parseInt(g.getMonth(day))<Integer.parseInt(g.getMonth(mCursor.getString(3)))
							&&Integer.parseInt(g.getMonth(day_To))>Integer.parseInt(g.getMonth(mCursor.getString(3)))){
						i.add(mCursor.getString(0).toString());
						d2.add(mCursor.getString(4).toString());
						d.add(mCursor.getString(3).toString());
						t.add(mCursor.getString(6).toString());	
						a.add(mCursor.getString(6).toString()+" "+mCursor.getString(2).toString());
						m.add(mCursor.getString(5).toString());
					}
					else if(Integer.parseInt(g.getMonth(day))==Integer.parseInt(g.getMonth(mCursor.getString(3)))
							&&Integer.parseInt(g.getMonth(day_To))==Integer.parseInt(g.getMonth(mCursor.getString(3)))){
						if(Integer.parseInt(g.getDay(day))<=Integer.parseInt(g.getDay(mCursor.getString(3)))
								&&Integer.parseInt(g.getDay(day_To))>=Integer.parseInt(g.getDay(mCursor.getString(3)))){
							i.add(mCursor.getString(0).toString());
							d2.add(mCursor.getString(4).toString());
							d.add(mCursor.getString(3).toString());
							t.add(mCursor.getString(6).toString());	
							a.add(mCursor.getString(6).toString()+" "+mCursor.getString(2).toString());
							m.add(mCursor.getString(5).toString());
						}

					}
					/*
					else if(Integer.parseInt(g.getMonth(day_To))==Integer.parseInt(g.getMonth(mCursor.getString(3))))
					{
						 if(Integer.parseInt(g.getDay(day_To))>=Integer.parseInt(g.getDay(mCursor.getString(3))))
						 {
							 i.add(mCursor.getString(0).toString());
								d2.add(mCursor.getString(4).toString());
									d.add(mCursor.getString(3).toString());
									t.add(mCursor.getString(6).toString());	
								a.add(mCursor.getString(6).toString()+" "+mCursor.getString(2).toString());
								m.add(mCursor.getString(5).toString());
						 }
					}
					else if(Integer.parseInt(g.getMonth(day))==Integer.parseInt(g.getMonth(mCursor.getString(3))))
					{
						if(Integer.parseInt(g.getDay(day))<=Integer.parseInt(g.getDay(mCursor.getString(3))))
						 {
							i.add(mCursor.getString(0).toString());
							d2.add(mCursor.getString(4).toString());
								d.add(mCursor.getString(3).toString());
								t.add(mCursor.getString(6).toString());	
							a.add(mCursor.getString(6).toString()+" "+mCursor.getString(2).toString());
							m.add(mCursor.getString(5).toString());
						 }
					}
					*/
				  }
				  else if(Integer.parseInt(g.getYear(day))==Integer.parseInt(g.getYear(mCursor.getString(3)))
							&&Integer.parseInt(g.getYear(day_To))>Integer.parseInt(g.getYear(mCursor.getString(3))))
					  {
					
						if(Integer.parseInt(g.getMonth(mCursor.getString(3)))>Integer.parseInt(g.getMonth(day)))
						{
							i.add(mCursor.getString(0).toString());
							d2.add(mCursor.getString(4).toString());
								d.add(mCursor.getString(3).toString());
								t.add(mCursor.getString(6).toString());	
							a.add(mCursor.getString(6).toString()+" "+mCursor.getString(2).toString());
							m.add(mCursor.getString(5).toString());
						}
						else if(Integer.parseInt(g.getMonth(mCursor.getString(3)))==Integer.parseInt(g.getMonth(day)))
						{
							if(Integer.parseInt(g.getDay(mCursor.getString(3)))>=Integer.parseInt(g.getDay(day)))
							{
								i.add(mCursor.getString(0).toString());
								d2.add(mCursor.getString(4).toString());
									d.add(mCursor.getString(3).toString());
									t.add(mCursor.getString(6).toString());	
								a.add(mCursor.getString(6).toString()+" "+mCursor.getString(2).toString());
								m.add(mCursor.getString(5).toString());
							}

						}

					  }
				  else if(Integer.parseInt(g.getYear(day))<Integer.parseInt(g.getYear(mCursor.getString(3)))
							&&Integer.parseInt(g.getYear(day_To))==Integer.parseInt(g.getYear(mCursor.getString(3))))
				  {
						if(Integer.parseInt(g.getMonth(mCursor.getString(3)))<Integer.parseInt(g.getMonth(day_To)))
						{
							i.add(mCursor.getString(0).toString());
							d2.add(mCursor.getString(4).toString());
								d.add(mCursor.getString(3).toString());
								t.add(mCursor.getString(6).toString());	
							a.add(mCursor.getString(6).toString()+" "+mCursor.getString(2).toString());
							m.add(mCursor.getString(5).toString());
						}
						else if(Integer.parseInt(g.getMonth(mCursor.getString(3)))==Integer.parseInt(g.getMonth(day_To)))
						{
							if(Integer.parseInt(g.getDay(mCursor.getString(3)))<=Integer.parseInt(g.getDay(day_To)))
							{
								i.add(mCursor.getString(0).toString());
								d2.add(mCursor.getString(4).toString());
									d.add(mCursor.getString(3).toString());
									t.add(mCursor.getString(6).toString());	
								a.add(mCursor.getString(6).toString()+" "+mCursor.getString(2).toString());
								m.add(mCursor.getString(5).toString());
							}

						}

							
				  }
				}
							  
				
		    while(mCursor.moveToNext())
		   {
		    	if(mCursor.getString(1).equals(idUser))
				{
				 
					if(Integer.parseInt(g.getYear(day))<Integer.parseInt(g.getYear(mCursor.getString(3)))&&Integer.parseInt(g.getYear(day_To))>Integer.parseInt(g.getYear(mCursor.getString(3))))
				  {
						
						i.add(mCursor.getString(0).toString());
						d2.add(mCursor.getString(4).toString());
							d.add(mCursor.getString(3).toString());
							t.add(mCursor.getString(6).toString());	
						a.add(mCursor.getString(6).toString()+" "+mCursor.getString(2).toString());
						m.add(mCursor.getString(5).toString());
				  }
			
				  else if(Integer.parseInt(g.getYear(day))==Integer.parseInt(g.getYear(mCursor.getString(3)))
						&&Integer.parseInt(g.getYear(day_To))==Integer.parseInt(g.getYear(mCursor.getString(3))))
				  {
					if(Integer.parseInt(g.getMonth(day))<Integer.parseInt(g.getMonth(mCursor.getString(3)))
							&&Integer.parseInt(g.getMonth(day_To))>Integer.parseInt(g.getMonth(mCursor.getString(3))))
					{
						i.add(mCursor.getString(0).toString());
						d2.add(mCursor.getString(4).toString());
							d.add(mCursor.getString(3).toString());
							t.add(mCursor.getString(6).toString());	
						a.add(mCursor.getString(6).toString()+" "+mCursor.getString(2).toString());
						m.add(mCursor.getString(5).toString());
					}
					else if(Integer.parseInt(g.getMonth(day))==Integer.parseInt(g.getMonth(mCursor.getString(3)))
							&&Integer.parseInt(g.getMonth(day_To))==Integer.parseInt(g.getMonth(mCursor.getString(3))))
					{
						if(Integer.parseInt(g.getDay(day))<=Integer.parseInt(g.getDay(mCursor.getString(3)))
								&&Integer.parseInt(g.getDay(day_To))>=Integer.parseInt(g.getDay(mCursor.getString(3))))
						{
							i.add(mCursor.getString(0).toString());
							d2.add(mCursor.getString(4).toString());
								d.add(mCursor.getString(3).toString());
								t.add(mCursor.getString(6).toString());	
							a.add(mCursor.getString(6).toString()+" "+mCursor.getString(2).toString());
							m.add(mCursor.getString(5).toString());
						}

					}
					/*
					else if(Integer.parseInt(g.getMonth(day_To))==Integer.parseInt(g.getMonth(mCursor.getString(3))))
					{
						 if(Integer.parseInt(g.getDay(day_To))>=Integer.parseInt(g.getDay(mCursor.getString(3))))
						 {
							 i.add(mCursor.getString(0).toString());
								d2.add(mCursor.getString(4).toString());
									d.add(mCursor.getString(3).toString());
									t.add(mCursor.getString(6).toString());	
								a.add(mCursor.getString(6).toString()+" "+mCursor.getString(2).toString());
								m.add(mCursor.getString(5).toString());
						 }
					}
					else if(Integer.parseInt(g.getMonth(day))==Integer.parseInt(g.getMonth(mCursor.getString(3))))
					{
						if(Integer.parseInt(g.getDay(day))<=Integer.parseInt(g.getDay(mCursor.getString(3))))
						 {
							i.add(mCursor.getString(0).toString());
							d2.add(mCursor.getString(4).toString());
								d.add(mCursor.getString(3).toString());
								t.add(mCursor.getString(6).toString());	
							a.add(mCursor.getString(6).toString()+" "+mCursor.getString(2).toString());
							m.add(mCursor.getString(5).toString());
						 }
					}
					*/
				  }
				  else if(Integer.parseInt(g.getYear(day))==Integer.parseInt(g.getYear(mCursor.getString(3)))
							&&Integer.parseInt(g.getYear(day_To))>Integer.parseInt(g.getYear(mCursor.getString(3))))
					  {
					
						if(Integer.parseInt(g.getMonth(mCursor.getString(3)))>Integer.parseInt(g.getMonth(day)))
						{
							i.add(mCursor.getString(0).toString());
							d2.add(mCursor.getString(4).toString());
								d.add(mCursor.getString(3).toString());
								t.add(mCursor.getString(6).toString());	
							a.add(mCursor.getString(6).toString()+" "+mCursor.getString(2).toString());
							m.add(mCursor.getString(5).toString());
						}
						else if(Integer.parseInt(g.getMonth(mCursor.getString(3)))==Integer.parseInt(g.getMonth(day)))
						{
							if(Integer.parseInt(g.getDay(mCursor.getString(3)))>=Integer.parseInt(g.getDay(day)))
							{
								i.add(mCursor.getString(0).toString());
								d2.add(mCursor.getString(4).toString());
									d.add(mCursor.getString(3).toString());
									t.add(mCursor.getString(6).toString());	
								a.add(mCursor.getString(6).toString()+" "+mCursor.getString(2).toString());
								m.add(mCursor.getString(5).toString());
							}

						}

					  }
				  else if(Integer.parseInt(g.getYear(day))<Integer.parseInt(g.getYear(mCursor.getString(3)))
							&&Integer.parseInt(g.getYear(day_To))==Integer.parseInt(g.getYear(mCursor.getString(3))))
				  {
						if(Integer.parseInt(g.getMonth(mCursor.getString(3)))<Integer.parseInt(g.getMonth(day_To)))
						{
							i.add(mCursor.getString(0).toString());
							d2.add(mCursor.getString(4).toString());
								d.add(mCursor.getString(3).toString());
								t.add(mCursor.getString(6).toString());	
							a.add(mCursor.getString(6).toString()+" "+mCursor.getString(2).toString());
							m.add(mCursor.getString(5).toString());
						}
						else if(Integer.parseInt(g.getMonth(mCursor.getString(3)))==Integer.parseInt(g.getMonth(day_To)))
						{
							if(Integer.parseInt(g.getDay(mCursor.getString(3)))<=Integer.parseInt(g.getDay(day_To)))
							{i.add(mCursor.getString(0).toString());
							d2.add(mCursor.getString(4).toString());
							d.add(mCursor.getString(3).toString());
							t.add(mCursor.getString(6).toString());	
						a.add(mCursor.getString(6).toString()+" "+mCursor.getString(2).toString());
						m.add(mCursor.getString(5).toString());
							}

						}

							
				  }
				}
							
			
	  
		   }
		
			}
		  mCursor.close();
		service.close();
	  }
	
	 public void onDestroy() {
		    super.onDestroy();
		 
		    // Replace mDbHelper as needed with your database connection, or
		    // whatever wraps your database connection. (See below.)
		    service.close();
		}
	 public static class EfficientAdapter extends BaseAdapter implements Filterable {
		    private LayoutInflater mInflater;
		    private Bitmap mIcon1;
		    private Context context;

		    public EfficientAdapter(Context context) {
		      // Cache the LayoutInflate to avoid asking for a new one each time.
		      mInflater = LayoutInflater.from(context);
		      this.context = context;
		    }

		    /**
		     * Make a view to hold each row.
		     * 
		     * @see android.widget.ListAdapter#getView(int, android.view.View,
		     *      android.view.ViewGroup)
		     */
		    public View getView(final int position, View convertView, ViewGroup parent) {
		      // A ViewHolder keeps references to children views to avoid
		      // unneccessary calls
		      // to findViewById() on each row.
		      ViewHolder holder;

		      // When convertView is not null, we can reuse it directly, there is
		      // no need
		      // to reinflate it. We only inflate a new View when the convertView
		      // supplied
		      // by ListView is null.
		      if (convertView == null) {
		        convertView = mInflater.inflate(R.layout.adaptor_content, null);

		        // Creates a ViewHolder and store references to the two children
		        // views
		        // we want to bind data to.
		        holder = new ViewHolder();
		        holder.textLine1 = (TextView) convertView.findViewById(R.id.textLine1);
		        holder.iconLine = (ImageView) convertView.findViewById(R.id.iconLine);
		        holder.textLine2 = (TextView) convertView.findViewById(R.id.textLine2);
		        
		    
		        convertView.setOnClickListener(new OnClickListener() {
		          private int pos = position;
		         CashBookScreen cb = new CashBookScreen();
		          @Override
		          public void onClick(View v) {
		 
		          Toast.makeText(context,type[pos], Toast.LENGTH_SHORT).show();
		     String str = type[position];
		     
		     if(str.equals("income"))
		     {
		       	 context.startActivity(new Intent(context,EditIncomeScreen.class).putExtra("name", data[position]).putExtra("amount", money[position]).putExtra("date", dayFrom[position]).putExtra("id", id[position]));
		     }
		     else  if(str.equals("spend"))
		     {
		       	 context.startActivity(new Intent(context,EditExpenseScreen.class).putExtra("name", data[position]).putExtra("amount", money[position]).putExtra("date", dayFrom[position]).putExtra("id", id[position]));
		     }
		   else if(str.equals("Lend"))
		    {
		       	 context.startActivity(new Intent(context,EditLoanScreen.class).putExtra("name", data[position].substring(5,data[position].length() )).putExtra("amount", money[position]).putExtra("date", dayFrom[position]).putExtra("date2",dayTo[position]).putExtra("id", id[position]));

		   }
		   else if(str.equals("Borrow"))
		    {
		       	 context.startActivity(new Intent(context,EditDebtScreen.class).putExtra("name", data[position].substring(7,data[position].length() )).putExtra("amount", money[position]).putExtra("date", dayFrom[position]).putExtra("date2",dayTo[position]).putExtra("id", id[position]));

		   }
		          }
		        });

		      
		        
		        

		        convertView.setTag(holder);
		      } else {
		        // Get the ViewHolder back to get fast access to the TextView
		        // and the ImageView.
		        holder = (ViewHolder) convertView.getTag();
		      }

		      // Get flag name and id
		    //  String filename = "flag_" + String.valueOf(position);
		      int id =-1;
		    //  for(int i=0;i<type.length;i++)
		      String str = type[position];
		     if(str.equals("income"))
		      {
		     String filename = "item1";
		     id = context.getResources().getIdentifier(filename, "drawable", context.getString(R.string.package_str));
		      }
		     else if(str.equals("spend"))
		      {
			     String filename = "item2";
			     id = context.getResources().getIdentifier(filename, "drawable", context.getString(R.string.package_str));
			      }
		     else if(str.equals("Borrow"))
		      {
			     String filename = "item3";
			     id = context.getResources().getIdentifier(filename, "drawable", context.getString(R.string.package_str));
			      }
		     else if(str.equals("Lend"))
		      {
			     String filename = "item4";
			     id = context.getResources().getIdentifier(filename, "drawable", context.getString(R.string.package_str));
			  }
		     else 
		     {
		    	 String filename = "item5";
			     id = context.getResources().getIdentifier(filename, "drawable", context.getString(R.string.package_str));
		     }
		      // Icons bound to the rows.
		      if (id != 0x0) {
		        mIcon1 = BitmapFactory.decodeResource(context.getResources(), id);
		      }


		      // Bind the data efficiently with the holder.
		     holder.iconLine.setImageBitmap(mIcon1);
		     holder.textLine1.setText(data[position]);
		     holder.textLine2.setText(money[position]);
		      return convertView;
		    }

		    static class ViewHolder {
		      TextView textLine1;
		      ImageView iconLine;
		      TextView textLine2;
		    }

		    @Override
		    public Filter getFilter() {
		      // TODO Auto-generated method stub
		      return null;
		    }

		    @Override
		    public long getItemId(int position) {
		      // TODO Auto-generated method stub
		      return 0;
		    }

		    @Override
		    public int getCount() {
		      // TODO Auto-generated method stub
		    //  return data.length;
		    	return data.length;
		    }
		    
		   
		    @Override
		    public Object getItem(int position) {
		      // TODO Auto-generated method stub
		      //   return data[position];
		    	return data[position];
		    }
		  }
}
